#include <bits/stdc++.h>
using namespace std;
using ll = long long;
// 5
int main(int argc, char const *argv[])
{
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	int n;
	cin >> n;
	vector<pair<ll, ll>> ab(n);
	for (auto& p : ab) {
		cin >> p.first >> p.second;
	}
	// DESC
	sort(ab.begin(), ab.end());
	
	// prev_max
	vector<ll> pre_max_b(n);
	pre_max_b[0] = ab[0].second;
	for (int i = 1; i < n; i++) {
		pre_max_b[i] = max(pre_max_b[i - 1], ab[i].second);
	}
	int q = 0; 
	cin >> q;
	while (q--) {
		ll x;
		cin >> x;
		// 二分
		auto it = upper_bound(ab.begin(), ab.end(), make_pair(x, 1LL << 60));
		int pos = it - ab.begin() - 1;
		if (pos < 0)	cout << "-1\n";
		else	cout  << pre_max_b[pos] << "\n";
	}
	return 0;
}


// // 4
// const int MOD = 1e4 + 7;
// using ll = long long;

// ll mod_inverse(ll a) {
// 	ll ans = 1;
// 	ll b = MOD - 2;
// 	while (b > 0) {
// 		if (b % 2 == 1) {
// 			ans = (ans * a) % MOD;
// 		}
// 		a = (a * a) % MOD;
// 		b /= 2;
// 	}
// 	return ans;
// }

// int main(int argc, char const *argv[])
// {
// 	string s;
// 	cin >> s;
// 	int n = s.size() / 5;	// 因式个数
// 	ll *constants = new ll[n];
// 	// split
// 	for (int i = 0; i < n; i++) {
// 		int pos = i * 5;
// 		char ops = s[pos + 2];	// + | -
// 		int d = s[pos + 3] - '0';
// 		if (ops == '+') {
// 			constants[i] = d;
// 		} else {
// 			constants[i] = -d;
// 		}
// 		constants[i] = (constants[i] % MOD + MOD) % MOD;
// 	}
// 	// clac all sum
// 	ll total = 1;
// 	for (int i = 0; i < n; i++) {
// 		total = (total * constants[i]) % MOD;
// 	}
// 	// 一次项 a
// 	ll ans = 0;
// 	for (int i = 0; i < n; i++) {
// 		ll inv = mod_inverse(constants[i]);
// 		ll term = (total * inv) % MOD;
// 		ans = (ans + term) % MOD;
// 	}
// 	cout << ans << endl;
// 	delete[] constants;
// 	return 0;
// }

// 3
// class FenwickTree
// {
// private:
// 	vector<int> tree;
// public:
// 	FenwickTree(int size) : tree(size + 2, 0) {}
// 	~FenwickTree() {}

// 	void update(size_t p, int delta) {
// 		for (; p < tree.size(); p += p & -p) {
// 			tree[p] += delta;
// 		}
// 	}
// 	int query(size_t p) {
// 		int ans = 0;
// 		for (; p > 0; p -= p & -p) {
// 			ans += tree[p];
// 		}
// 		return ans;
// 	}
// };

// int main(int argc, char const *argv[])
// {
// 	ios::sync_with_stdio(false);
// 	cin.tie(nullptr);

// 	int T;
// 	cin >> T;
// 	while (T--) {
// 		int n, m, x, y;
// 		cin >> n >> m >> x >> y;
// 		vector<int> lock(n + 1, 0);
// 		FenwickTree ft(n);
// 		for (int i = 1; i <= n; i++) {
// 			ft.update(i, 1);
// 		}
// 		while (m--) {
// 			size_t p;
// 			cin >> p;
// 			int delta = (lock[p] == 0) ? -1 : 1;
// 			ft.update(p, delta);
// 			lock[p] ^= 1;

// 			// 可访问数
// 			int cnt1 = ft.query(x);
// 			int cnt2 = ft.query(n) - ft.query(y - 1);
// 			cout << cnt1 << " " << cnt2 << "\n";
// 		}
// 	}
// 	return 0;
// }

